package com.example.softdemo.controller;

import com.example.softdemo.pojo.User;
import com.example.softdemo.serviceImpl.UserServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;


import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author 李琦 on 2021/11/3.
 * @version java version "1.8.0_301" 2021-04-20
 */
/*
在某个类的上面加某个
@Controller
@Component
@Service
@Repository
注解,说明该类由
Spring框架管理这个类
管理该类的意思是,该对象由spring创建和管理,销毁
 */
@Controller
public class UserController {

    //注入业务层对象
    @Autowired
    private UserServiceImpl userService;

    //用一个注解来接收客户端发过来的请求
    @RequestMapping("/login")//请求映射,请求路径
    public String toLoginPage(){
        Integer id=1;
        User user=userService.findUserById(id);
        System.out.println(user);
        return "/login";//视图名称
    }
    //在浏览器地址栏输入localhost:8055/toListPage
    //跳转到userList.html
    @RequestMapping("/toListPage")
    public String touserListPage(){

        return "userList";
    }

    //请求叫什么,对应的方法名字就叫什么
    @RequestMapping("/findUserInfo")
    public String findUserInfo(Model model){
        List<User> list= userService.findUserList();
        //如何将服务端的数据绑定到前端页面
        //使用Model对象绑定数据
//        for(User user:list){
//            System.out.println(user);
//        }
        model.addAttribute("listData", list);

        return "userList";
    }
    //前端传过来的参数名和后端接收的参数名一般要保持一致
    //接收客户端的请求   @{/deleteUserByid(id=${i.id})}
    @RequestMapping("/deleteUserByid")
    public String deleteUserByid(Integer id){
        //在控制层,使用业务层对象调用业务层方法
        userService.deleteUserinfoById(id);
        //刷新页面
        return "redirect:/findUserInfo";//重定向
    }

    //将对象在服务端绑定到页面显示的效果
    @RequestMapping("/find")
    public String findData(Model model){
        //对象
        User user =new User();
        user.setId(10);
        user.setName("李伟");
        user.setPassword("123456");

        model.addAttribute("u",user);
        model.addAttribute("shun","吃葡萄不吐葡萄皮");
        return "test01";

    }

    //在浏览器输入  getJson01获取指定的Json
    //数据返回给浏览器
    //map集合的实现类就是hashmap
@RequestMapping("getJson01")
    public Map<String ,Object> test01(){
        //Map集合存储数据结构特点key-value
        Map<String ,Object> map=new HashMap<>();
        map.put("name","李琦");
        map.put("password",123);
        map.put("address","太原学院");
        return map;

    }



}


